#define _CRT_SECURE_NO_WARNINGS
//class Solution {
//public:
//    void duplicateZeros(vector<int>& arr) {
//        int dest = -1;
//        int cur = 0;
//        while (cur < arr.size())
//        {
//            if (arr[cur])
//            {
//                ++dest;
//            }
//            else
//            {
//                dest += 2;
//            }
//            if (dest >= arr.size() - 1)
//            {
//                break;
//            }
//            ++cur;
//        }
//        if (dest == arr.size())
//        {
//            arr[arr.size() - 1] = 0;
//            --cur;
//            dest -= 2;
//        }
//        while (cur >= 0)
//        {
//            if (arr[cur])
//            {
//                arr[dest--] = arr[cur--];
//            }
//            else
//            {
//                arr[dest--] = 0;
//                arr[dest--] = 0;
//                --cur;
//            }
//        }
//    }
//};

//class Solution {
//public:
//    int Sum(int n)
//    {
//        int sum = 0;
//        while (n)
//        {
//            int t = n % 10;
//            sum += t * t;
//            n /= 10;
//        }
//        return sum;
//    }
//    bool isHappy(int n)
//    {
//        int slow = n;
//        int fast = Sum(n);
//        while (slow != fast)
//        {
//            slow = Sum(slow);
//            fast = Sum(Sum(fast));
//        }
//        return slow == 1;
//    }
//};